﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using PontoDeVenda.DataServiceReference;

namespace PontoDeVenda
{
    public partial class JanelaCliente : ChildWindow
    {

        void proxy_GetClientePorIdCompleted(object sender,
            DataServiceReference.GetClientePorIdCompletedEventArgs e)
        {
            DataServiceReference.Cliente cliente = e.Result;
            if (cliente != null)
            {
                this.LayoutRoot.DataContext = e.Result;
                if (e.Result.sexo == 'm' || e.Result.sexo == 'M')
                    cbbSexo.SelectedIndex = 0;
                else
                    cbbSexo.SelectedIndex = 1;
            }
            else
            {
                MessageBox.Show("Cliente não encontrado", "Select", MessageBoxButton.OK);
                txtClienteID.Text = "";
                txtEmail.Text = "";
                txtNome.Text = "";
                cbbSexo.SelectedIndex = -1;
            }
            
        }

        List<string> sexos;
        char sexo;
        public JanelaCliente()
        {
            InitializeComponent();
            sexos = new List<string>();
            sexos.Add("Masculino");
            sexos.Add("Feminino");

            cbbSexo.ItemsSource = sexos;
        }

        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = true;
        }

        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = false;
        }

        private void btnInserirCliente_Click(object sender, RoutedEventArgs e)
        {
            txtMensagemStatus.Text = "";
            try
            {
                Cliente cliente = new Cliente();
                cliente.clienteID = Convert.ToInt32(txtClienteID.Text);
                cliente.nome = txtNome.Text;
                //cliente.sexo = Convert.ToChar(txtSexo.Text);
                cliente.sexo = sexo;
                cliente.email = txtEmail.Text;

                DataServiceReference.DataServiceClient proxy = new
                        DataServiceReference.DataServiceClient();

                proxy.InserirClienteAsync(cliente);

                MessageBox.Show("Cliente inserido com sucesso", "Insert", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {
                txtMensagemStatus.Text = "ERRO! " + ex.Message;
            }
        }

        private void btnAtualizarCliente_Click(object sender, RoutedEventArgs e)
        {
            txtMensagemStatus.Text = "";
            try
            {
                Cliente cliente = new Cliente();
                cliente.clienteID = Convert.ToInt32(txtClienteID.Text);
                cliente.nome = txtNome.Text;
                //cliente.sexo = Convert.ToChar(txtSexo.Text);
                cliente.sexo = sexo;
                cliente.email = txtEmail.Text;

                DataServiceReference.DataServiceClient proxy = new
                        DataServiceReference.DataServiceClient();

                proxy.AtualizarClienteAsync(cliente);
                
                MessageBox.Show("Cliente atualizado com sucesso", "Update", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {
                txtMensagemStatus.Text = "ERRO! " + ex.Message;
            }
            
        }

        private void btnExcluirCliente_Click(object sender, RoutedEventArgs e)
        {
            txtMensagemStatus.Text = "";
            try
            {
                int clienteId = Convert.ToInt16(txtClienteID.Text);
                DataServiceReference.DataServiceClient proxy = new
                    DataServiceReference.DataServiceClient();

                proxy.DeletarClienteAsync(clienteId);

                MessageBox.Show("Cliente deletado com sucesso", "Delete", MessageBoxButton.OK);
                txtClienteID.Text = "";
                txtEmail.Text = "";
                txtNome.Text = "";
                cbbSexo.SelectedIndex = -1;
            }
            catch (Exception ex)
            {
                txtMensagemStatus.Text = "ERRO! " + ex.Message;
            }
        }

        private void GetCliente_Click(object sender, RoutedEventArgs e)
        {
            txtMensagemStatus.Text = "";
            try
            {
                int clienteId = Convert.ToInt16(txtClienteID.Text);
                DataServiceReference.DataServiceClient proxy = new
                    DataServiceReference.DataServiceClient();
                proxy.GetClientePorIdCompleted += new
                    EventHandler<DataServiceReference
                    .GetClientePorIdCompletedEventArgs>(proxy_GetClientePorIdCompleted);
                proxy.GetClientePorIdAsync(clienteId);

            }
            catch (Exception ex)
            {
                txtMensagemStatus.Text = "ERRO: " + ex.Message;
            }
 
        }

        private void cbbSexo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbbSexo.SelectedIndex == 0)
                sexo = 'M';                
            else
                sexo = 'F';
        }
    }
}

